package com.xumx.demo.customize.annotate.log;

import java.lang.annotation.*;

/**
 * 方法调用日志注解，用于标记需要记录日志的方法
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface MethodLog {

    /**
     * 方法描述
     */
    String description() default "";

    /**
     * 是否记录入参
     */
    boolean logInput() default true;

    /**
     * 是否记录出参
     */
    boolean logOutput() default true;

    /**
     * 是否记录异常堆栈
     */
    boolean logExceptionStack() default true;

    /**
     * 是否保存到数据库
     */
    boolean saveToDb() default true;

    /**
     * 忽略的参数索引，不记录这些索引的参数值（用于敏感信息）
     */
    int[] ignoreParamIndexes() default {};

    /**
     * 日志过期时间(天)，默认为30天
     */
    int expireDays() default 3000;
}
